perm filename UPDATE.SAI[11,ALS]2 blob sn#069820 filedate 1973-11-07 generic text, type T, neo UTF8
00010	BEGIN "UPDATE"
00020	DEFINE ⊂="COMMENT";  ⊂ 8/28/73 Inserts corrected headers in NEWPH format;
00030	DEFINE ⊃="⊂"; ⊂ Change this symbol to mean "" to get running commentary;
00040	⊂ When data file is specified as XXX.YYY the program expects to find
00050	   header information on XXX.HRX and it writes out the corrected file;;
00070	⊂ Program CONVER.SAI is used to convert OLDPH files to the NEWPH format
00080	    and to prepare a list of the header for manual corrections which is
00090	    called XXX.HDR;
00100	
00110	REQUIRE "BLOCKS.HDR[4,ALS]" SOURCE_FILE;
00120	INTEGER ARRAY LFILE[0:'177];
00130	INTERNAL INTEGER ARRAY INDATA[0:255];
00140	INTEGER ARRAY SYMBOL,SAMPLE[0:127];
00150	INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
00160	INTERNAL INTEGER SEGTOT,RL,EOF,EOFA,BRK;
00170	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
00180	STRING READ1,READ2,READ3,FILEL,FILEI,TFILE,TFILEI,FILLST,PREHINT;
00190	INTEGER ARRAY OLDPH,NEWPH[0:63];
00200	BOOLEAN ER;
     

00010	STDBRK(1);
00020	 SETBREAK(14,"∃",NULL,"INS");
00030	 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
00040	 SETBREAK(16,'56,NULL,"INA");
00050	 SETBREAK(17,'15,'12,"INS");
00060	
00070	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
00080	OUTSTR("This program is used to replace the HINT information in the "&CRLF&
00090	    "header of a file specified by the user. It expects a header "&CRLF&
00100	    "correction file of the same name but with the extention of HDX "&CRLF&
00110	    "and it overwrites Tthe input file."&CRLF);
00120	OUTSTR("   Replace ''⊂'' by '''' in line 30/1 for on-line data."&CRLF&LF);
00130	
00140	CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
00150	LOOKUP(CHAN4,"MAP.PHN",ER);
00160	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find MAP.PHN.  File = ");
00170	LOOKUP(CHAN4,TFILE←INCHWL,ER); END;  EOFA←0;
00180	FILLST←INPUT(CHAN4,14);
00190	⊂ OUTSTR("MAP.PHN contains "&CRLF&FILLST&CRLF);
00200	CLOSE(CHAN4);
00210	
00220	FOR I←0 STEP 1 UNTIL 127 DO  BEGIN
00230	  WHILE TRUE DO BEGIN
00240	    READ1←SCAN(FILLST,17,K);
00250	    READ3←READ1[1 TO 1];
00260	    IF READ3≠"⊂"  THEN DONE; END;
00270	IF READ3="" THEN DONE;
00280	  SYMBOL[I]←CVASC(SCAN(READ1,15,K));
00290	  SAMPLE[I]←CVASC(SCAN(READ1,15,K));
00300	⊂ OUTSTR(CVOS(SYMBOL[I])&TB&CVOS(SAMPLE[I])&CRLF);
00310	END;
00320	WHILE TRUE DO BEGIN "LISTREAD"
00330	FILEI←STRIN("Data file to be corrected (type name or CR to terminate) ");
00340	IF FILEI="" THEN DONE;
00350	
00360	CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,10,0,0,0,EOF);
00370	LOOKUP(CHAN1,FILEI,ER);
00380	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEI&" File = ");
00390	LOOKUP(CHAN1,FILEI←INCHWL,ER); END;  EOFA←0;
00400	ARRYIN(CHAN1,LFILE[0],'200);	⊂ Input header;
00410	SEGTOT←(LFILE[0]*6)%256;
00420	⊃ OUTSTR(FILEI&" "&CVS(SEGTOT)&"   ");
00430	⊂  FOR I←0 STEP 1 UNTIL 127 DO OUTSTR(CVOS(LFILE[I])&TB);
00440	
00450	READ2←FILEI; FILEL←SCAN(READ2,16,J)&"HDX";
00460	CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
00470	LOOKUP(CHAN4,FILEL,ER);
00480	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&".  File = ");
00490	LOOKUP(CHAN4,FILEL←INCHWL,ER); END;  EOFA←0;
00500	FILLST←INPUT(CHAN4,14);
00510	⊃ OUTSTR("FILLST contains "&CRLF&FILLST&CRLF);
00520	CLOSE(CHAN4);
00530	
00540	J←21; ⊃ OUTSTR(CRLF&"Starting FOR I←0 "&CRLF);
00550	FOR J←21 STEP 1 UNTIL 127 DO  BEGIN
00560	  WHILE TRUE DO BEGIN
00570	    READ1←SCAN(FILLST,17,K);
00580	    READ3←READ1[1 TO 1];
00590	    IF READ3≠"⊂" THEN DONE; END;
00600	  IF READ1="" THEN DONE;
00610	⊃  OUTSTR("Read1 contains "&READ1&TB);
00620	  LFILE[J]←CVASC(SCAN(READ1,15,K));
00630	⊂ OUTSTR(CVOS(LFILE[J])&TB&TB);
00640	  FOR M←0 STEP 1 UNTIL 126 DO BEGIN
00650	⊂    OUTSTR(CVOS(SYMBOL[M])&TB);
00660	    IF LFILE[J]=SYMBOL[M] THEN DONE; END;
00670	 OUTSTR(CVSTR(LFILE[J]));   OUTSTR(TB);
00680	  L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(14,LFILE[J],27));
00690	 OUTSTR(CVS(L)&TB);
00700	  L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(8,LFILE[J],35));
00710	 OUTSTR(CVS(L)&TB);
00720	  OUTSTR(CVSTR(SAMPLE[M]));  OUTSTR(CRLF);
00730	⊃   OUTSTR(CVOS(LFILE[J])&CRLF);
00740	  END;
00745	FOR J←J STEP 1 UNTIL 127 DO LFILE[J]←0;
00750	
00780	⊃ OUTSTR("eady to write "&FILEI&TB);
00790	OPEN(CHAN4,"DSK",'10,0,10,0,0,EOF);
00800	ENTER(CHAN4,FILEI,0);
00810	ARRYOUT(CHAN4,LFILE[0],'200);
00820	WHILE EOF=0 DO BEGIN
00830	  FOR I←0 STEP 1 UNTIL 255 DO INDATA[I]←0;
00840	  ARRYIN(CHAN1,INDATA[0],256); J←0;
00850	  FOR I←0 STEP 1 UNTIL 255 DO J←J+INDATA[I]; IF J=0 THEN DONE;
00860	  ARRYOUT(CHAN4,INDATA[0],256); END; CLOSE(CHAN1); CLOSE(CHAN4);
00870	OUTSTR(CRLF&"File "&FILEI&" has been written with corrections."&CRLF&LF);
00880	END "LISTREAD";
00890	RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN4);
00900	
00910	END "UPDATE";